User blog:Qlf2007/Functions on graphs
If you are tired of iterated exponentiations and factorials, here are two ways to construct computable functions that are more interesting to imagine. Both are based on graphs . The Sandpile Model First fix a function \(F(n)\) that maps \(n\) to graphs. Its output should increase in complexity as \(n\) grows. For example, the \(n \times n\) grid graph , the \(n\)-dimensional hypercube graph , or the Cayley graph of an \(n\)-dimensional Rubik's Cube . Let \(G = (V, E)\) be a finite, connected, undirected graph. Pick one vertex \(q\) in \(G\) and call it the sink. The exact choice doesn't matter much. Let \(\tilde{V} = V / \{q\}\). A sandpile on \(G\) is a function \(f : \tilde{V} \mapsto \mathbb{N}\), such that \(0 \leq f(v) < \mathrm{deg}_G(v)\) for each vertex \(v\). Starting from a sandpile \(f\), we can choose a vertex \(v \in \tilde{V}\) and throw some sand onto it. That is, increase \(f(v)\) by \(1\). However, the result might no longer be a valid sandpile because some vertices might have \(f(v) \geq \mathrm{deg}_G(v)\). For each such vertex \(v\), we decrease \(f(v\) by \(\mathrm{deg}_G(v)\), and increase \(f(v')\) by \(1\) for each neighbor \(v'\) of \(v\). However, we do not keep track of \(f(v)\) when \(v\) is the sink \(q\). We repeat this operation until the sandpile becomes valid. (This will always terminate.) This is called the stabilization of a sandpile. There is an elegant theory behind sandpiles. For our purpose, consider the Markov chain process whose states are sandpiles. At each step, we choose a random vertex, add some sand to this vertex, and stabilize the sandpile. It can be shown that there is a single class of recurrent states for this process, called the recurrent sandpiles. Amazingly, there is a bijection between recurrent sandpiles and the spanning trees of \(G\). Furthermore, the recurrent sandpiles form an abelian group under vertex-wise addition. If we draw out the cayley graph for this group, we get a connected undirected graph, with one vertex for each spanning tree of \(G\), and each vertex connected to (at most) \(2|V| - 2\) other vertices. Let us call this graph the sandpile graph of \(G\), and denote it by \(\mathcal{S}(G)\). Now for each ordinal \(\alpha\), we define a function \(\mathcal{S}_\alpha\) which takes a graph and a positive integer \(n\) and returns another graph. \= \mathcal{S}(G)\ \+ 1}(G,n) = \underbrace{\mathcal{S}_\alpha(\mathcal{S}_\alpha(\cdots\mathcal{S}_\alpha(G,n)\cdots,n),n)}_{n \times \mathcal{S}_\alpha}\ \= \mathcal{S}_{\alpha[n}(G,n)\] We finish off by defining \(g_\alpha(n) = \mathcal{S}_\alpha(F(n),n)\). We can convert graphs back into numbers by, say, taking its number of vertices or its number of spanning trees. Hypermazes The idea of hypermazes comes from Walter D. Pullen, and is implemented in his maze creation program Daedalus . Here we present his ideas in a more general way. Let \(G = (V,E)\) be a finite, connected, undirected graph. Let \(P,Q\) be two disjoint sets of vertices in \(G\). A cut ''through \(G\) is a partition of \(V\) into two sets \(A,B\), such that \(P \subseteq A, Q \subseteq B\), and the induced subgraphs of both \(A\) and \(B\) are still connected. In Pullen's presentation, \(G\) is a grid graph, \(P\) and \(Q\) consist of the first row and last row of \(G\), respectively. A first-order hypermaze of width \(n\) consists of \(n\) copies of \(G\). Each copy is associated with an ''obstacle \(W\), which is a subset of \(V\). Two cuts \((A,B)\) and \((A',B')\) are said to be compatible with each other with respect to an obstacle \(W\), if \(A \cap W = A' \cap W\), and consequently \(B \cap W = B' \cap W\). In essence, each obstacle partitions the set of all cuts into a number of equivalence classes. Between each two copies is a set \(R\) of admissible edges, which is a subset of \(E\). A cut \((A,B)\) is said to be compatible with a set of admissible edges \(R\), if every edge that connects a vertex in \(A\) to a vertex in \(B\) is in \(R\). The game is played in the following way: #First choose a cut in the first copy of \(G\). #At each step, you can either go to the next copy of \(G\) or the previous copy. However, the cut that you land upon must be 1) within the same equivalence class of cuts in your current copy as your current cut; 2) be compatible with the admissible edge set between the current and destination copy. #The goal is to get to the last copy of \(G\). A graph representation of a hypermaze consists of edges of two kinds. The first kind connects cuts within the same equivalence class in the same copy of \(G\). The second kind connects cuts between consecutive copies of \(G\). A hypermaze is said to be perfect if, after contracting the vertices representing cuts in the same equivalence class to a single vertex, the graph is acyclic and does not have multiedges. An second-order hypermaze of width \(n\) consists of \(n^2\) copies of \(G\), arranged in an \(n \times n\) grid. Each row and each column represents a first-order hypermaze. First choose a solution to the hypermaze of the first row. This consists of a cut for each copy of \(G\) in the first row. At each step you can move to a solution for a neighboring row. However, the transformation from the old cut to the new cut in each column, must be a legal move in the hypermaze represented by that column. We can similarly define \(n\)-order hypermazes for each positive integer \(n\). However these are very difficult to describe precisely. Now fix a graph \(G\). We define \(H(G,n)\) to be the number of perfect hypermazes on \(G\) of order \(n\). It might be possible to generalize \(n\) to any ordinal number, but I haven't come up with a good way to define it. Category:Blog posts